//
// Created by PC on 2024/7/2.
//GESP 2024.06 五级 编程第2题
//OJ:https://www.luogu.com.cn/problem/P10720
//PASS
/*
 *试题名称：小杨的幸运数字
时间限制：1.0 s
内存限制：512.0 MB

3.2.1 题面描述
小杨认为他的幸运数字应该恰好有两种不同的质因子，例如，12=2x2x3 的质因子有2,3 ，恰好为两种不同的质
因子，因此 12是幸运数字，而30=2x3x5 的质因子有2,3,5 ，不符合要求，不为幸运数字。
小杨现在有n 个正整数，他想知道每个正整数是否是他的幸运数字。
3.2.2 输入格式
第一行包含一个正整数 n，代表正整数个数。
之后 n行，每行一个正整数。
3.2.3 输出格式
输出 n行，对于每个正整数，如果是幸运数字，输出1，否则输出0。
3.2.4 样例
 input:
 3
 7
 12
 30
 output:
 0
 1
 0
3.2.5 样例解释
7的质因子有7 ，只有一种。
12的质因子有 2,3，恰好有两种。
30的质因子有 2,3,5，有三种。
3.2.6 数据范围
 40% n<=100 正整数<=10E5
 60% n<=10E4 正整数<=10E6
对于全部数据，保证有 1<=n<=10E4，每个正整数 ai满足2<=ai<=10E6 。
 *
 * */


#include <iostream>
#include <vector>
using namespace std;

vector<int> primesinN(int n)
{
    vector<int> primes;
    bool isp[n+1]={0};
    for (int i = 2; i < n+1; ++i)
        isp[i]=1;
    for (int i = 2; i < n+1; ++i)
    {
        if (isp[i])
            primes.push_back(i);
        for (int j = 0; j < primes.size() && primes[j]*i<=n; ++j)
        {
            isp[primes[j]*i]=0;
            if (i%primes[j]==0)
                break;
        }
    }
//    cout<<primes.size();
    return primes;
}
int main()
{
    vector<int> p=primesinN(1000000);
    int x = 30;
    int n;
    cin>>n;
    while(n--)
    {
        cin>>x;
        vector<int> count;
        for (int i = 0; i < p.size() && x>=p[i]; ++i)
        {
            while(x%p[i]==0)
            {
                // 确保不重复
                if (count.empty() || count[count.size()-1]!=i)
                    count.push_back(i);
                x/=p[i];
            }
        }
        cout<<(count.size()==2)<<endl;

    }
    return 0;
}